package com.nuedu.corejava.ch8;

public class TryClass {

	public static void main(String[] args) {
		
		//1.异常处理方法  try catch
		int a=1,b=0;
		
		try {
			int c=a/b;
		} catch (Exception e) {
			//向上抛出异常
			//throw e;
		}
		
		//2.try{} finally{}
		try {
			int c=a/b;
		}
		finally {
			System.out.println("一定会执行的代码");
		}
		//3.try catch finally
		try {
			int c=a/b;//可能发生的代码
		} catch (Exception e) {
			// 发生异常后需要执行的代码
		}finally {
			//不管是否发生异常，一定会执行的代码
			System.out.println("一定会执行的代码");
		}
		//4.try catch catch finally
		try {
			int c=a/b;//可能发生的代码
			int[] array = new int[3];
			array[3] = 5;
		} catch (ArrayIndexOutOfBoundsException e) {
			// 发生异常后需要执行的代码
			//e.printStackTrace();
			System.out.println("数组下标越界");
		}catch (ArithmeticException e) {//使用多个catch块时，需要注意：异常类的父子关系，父类异常需要写在后面
			System.out.println("发生了算数运算异常");
		}
		finally {
			//不管是否发生异常，一定会执行的代码
			System.out.println("一定会执行的代码");
		}
		//5.try catch finally
				try {
					int c=a/b;//可能发生的代码
					int[] array = new int[3];
					array[3] = 5;
				} catch (ArrayIndexOutOfBoundsException |ArithmeticException e) {//使用一个catch捕获多个异常，异常不能有父子关系
					// 发生异常后需要执行的代码
					//e.printStackTrace();
					System.out.println("数组下标越界 或  发生了算数运算异常");
				}
				finally {
					//不管是否发生异常，一定会执行的代码
					System.out.println("一定会执行的代码");
				}
		//6.try catch支持嵌套
				try {
					try {
						try {
							
						} catch (Exception e) {
							
						}
					} catch (Exception e) {
						
					}
				} catch (Exception e) {
					
				}
		
		System.out.println("main方法执行完毕");
	}

}
